package org.fastsyncer.common.driver;

/**
 * 驱动事件:
 * <p>基于观察者模式实现驱动事件监听:1.新增、2.修改、3.删除、4.启动、5.停止、6.启用、7.禁用</p>
 * <p>如何使用：实现<tt>Event</tt>接口即可, 例如：</p>
 * <pre>
 *  public class Hello implements Event {
 *
 *  //@Override
 *  public void add(String id) {
 *      System.out.println("这是Hello里面的add方法" + id);
 *  }
 *
 *  //@Override
 *  public void update(String id) {
 *      System.out.println("这是Hello里面的update方法" + id);
 *  }
 *
 *  ...
 *
 * }
 * </pre>
 *
 * @author AE86
 * @version 1.0.0
 * @date 2017年12月13日 下午15:06:44
 */
public interface Event {

    /**
     * 触发驱动新增事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void add(String id);

    /**
     * 触发驱动修改事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void update(String id);

    /**
     * 触发驱动删除事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void delete(String id);

    /**
     * 触发驱动启动事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void start(String id);

    /**
     * 触发驱动停止事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void stop(String id);

    /**
     * 触发驱动启用事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void enable(String id);

    /**
     * 触发驱动禁用事件
     *
     * @param id 驱动ID
     * @throws Exception
     */
    void disable(String id);

}
